import { hasValue } from '@/api/system/commonUtils'

/**
 * 从对象数组中提取某个属性组成数组
 * @param objectArray
 * @param fieldName
 * @returns {*[]}
 */
export function fetchFieldFromObjectArray(objectArray, fieldName) {
  let resultArr = []
  // 输入参数不正确
  if (!objectArray || objectArray.length === 0 || !fieldName) {
    return resultArr
  }

  // 对象中没有该属性
  if (!hasValue(objectArray[0][fieldName])) {
    return resultArr
  }

  objectArray.forEach(item => {
    resultArr.push(item[fieldName])
  })

  return resultArr
}

/**
 * 返回变量在数组中的索引, 从0开始, 没有匹配的返回-1
 * @param array
 * @param variable
 */
export function getIndexOfArray(array, variable) {
  if (!hasValue(array) || !hasValue(variable) || array.length === 0) {
    return -1
  }

  for (let i = 0, len = array.length; i < len; i++) {
    if (array[i] === variable) {
      return i
    }
  }

  return -1
}

/**
 * 获取安装的下标索引
 * @param index 原本的索引
 * @param arrayLength 数组的长度
 * @returns {number|*}
 */
export function getSafeIndex(index, arrayLength) {
  return index < 0 ? 0 : index % arrayLength
}
